<?php
/**
 * Controller_Article
 *
 * Класс Controller_Article отвечает за обработку страниц статей
 *
 * @author Mike
 */
class Controller_Article extends Controller_Base {

	/**
	 * Выбор действия по URL
	 *
	 */
	public function action() {
		$this->addCrumb('Главная', W_ABSPATH);
		$this->addCrumb('Статьи', W_ABSPATH . 'articles');
		switch ($this->arrRequest[1]) {
			case '':
				$this->actionArticlesPage();
				break;
			default:
				$objArticle = new Article();
				$objArticle->find('first', array('conditions' => "`article`.`url` ='" . Service_Escape::absolutelyEscapeString($this->arrRequest[1]) . "' AND `article`.`essence_type` = 2"));
				if(!$objArticle->id) throw new Exception('', 404);
				$this->actionArticlePage($objArticle);
		}
	}

	/**
	 * Страница всех статей
	 *
	 */
	public function actionArticlesPage() {
		$objArticle = new Article();
		$arrArticles = $objArticle->find('all', array('conditions' => '`article`.`essence_type` = 2'));
		
		$this->title = $this->pageHead = 'Статьи';
				
		$this->showHeader();
			View_Article::showArticlesPage($arrArticles);
		$this->showFooter();
	}
	
	/**
	 * Страница информационной статьи
	 *
	 * @param Article $objArticle - объект статьи
	 */
	public function actionArticlePage(Article $objArticle) {
		if (!isset($_COOKIE['art_inf' . $objArticle->id])) { // Если для этой статьи нет куки, то наращиваем её счётчик просмотров, и записываем куку
			$currentViews = $objArticle->getField('views');
			setcookie('art_inf' . $objArticle->id, 1, time() + 99999999, W_ABSPATH);
			$objArticle->updateFields(array('views' => $currentViews + 1));
			$objArticle->setField('views', $currentViews + 1);
		}
		
		$this->addCrumb($objArticle->getField('title'), W_ABSPATH . 'articles/' . $objArticle->getField('url'));
		$this->bodyAttr = 'info-article';
		$this->keywords = $objArticle->getField('keywords');
		$this->description = $objArticle->getField('description');
		$this->title = $objArticle->getField('title');
		$this->pageHead = $objArticle->getField('article_name') . (User_Seance::isAdmin() ? ' (<a href="' . W_ADMIN . 'articles/edit/' . $objArticle->id . '">Редактировать</a>)' : '');
				
		$this->showHeader();
			View_Article::showInfoArticlePage($objArticle);
		$this->showFooter();
	}
}